namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// An updateable progress bar component. The progress bar supports two different modes: manual and automatic.  In manual mode, you are responsible for showing, updating (via {@link #updateProgress}) and clearing the
	/// progress bar as needed from your own code. This method is most appropriate when you want to show progress
	/// throughout an operation that has predictable points of interest at which you can update the control.  In automatic mode, you simply call {@link #wait} and let the progress bar run indefinitely, only clearing it
	/// once the operation is complete. You can optionally have the progress bar wait for a specific amount of time
	/// and then clear itself. Automatic mode is most appropriate for timed operations or asynchronous operations in
	/// which you have no need for indicating intermediate progress.
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;An updateable progress bar component. The progress bar supports two different modes: manual and automatic.&lt;/p&gt;
	/// &lt;p&gt;In manual mode, you are responsible for showing, updating (via {@link #updateProgress}) and clearing the
	/// progress bar as needed from your own code. This method is most appropriate when you want to show progress
	/// throughout an operation that has predictable points of interest at which you can update the control.&lt;/p&gt;
	/// &lt;p&gt;In automatic mode, you simply call {@link #wait} and let the progress bar run indefinitely, only clearing it
	/// once the operation is complete. You can optionally have the progress bar wait for a specific amount of time
	/// and then clear itself. Automatic mode is most appropriate for timed operations or asynchronous operations in
	/// which you have no need for indicating intermediate progress.&lt;/p&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\ProgressBar.js</definedin>
	[ScriptName("ProgressBar")]
	[ScriptNamespace("Ext")]
	[Imported()]
	public partial class ProgressBar : ext.BoxComponent
	{
		
		#region Constructors
		public ProgressBar(ext.ProgressBar_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public ProgressBar()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>The base CSS class to apply to the progress bar&apos;s wrapper element (defaults to &apos;x-progress&apos;)</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		[ScriptName("baseCls")]
		public string BaseCls;
		
		/// <summary>True to animate the progress bar during transitions (defaults to false)</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		[ScriptName("animate")]
		public bool Animate;
		
		/// <summary>Fires after each update interval</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		[ScriptName("updateEventName")]
		public const string UpdateEventName = "update";
		#endregion
		
		#region Methods
		/// <summary>Returns true if the progress bar is currently in a {@link #wait} operation</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <returns>True if waiting, else false</returns>
		[ScriptName("isWaiting")]
		public bool IsWaiting()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Synchronizes the inner bar width to the proper proportion of the total componet width based
		/// on the current progress {@link #value}. This will be called automatically when the ProgressBar
		/// is resized by a layout, but if it is rendered auto width, this method can be called from
		/// another resize handler to sync the ProgressBar if necessary.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		[ScriptName("syncProgressBar")]
		public void SyncProgressBar()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the size of the progress bar.</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="width">The new width in pixels</param>
		/// <param name="height">The new height in pixels</param>
		/// <returns>this</returns>
		[ScriptName("setSize")]
		public ext.ProgressBar SetSize(System.Number width, System.Number height)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar value, and optionally its text. If the text argument is not specified,
		/// any existing text value will be unchanged. To blank out existing text, pass &apos;&apos;. Note that even
		/// if the progress bar value exceeds 1, it will never automatically reset -- you are responsible for
		/// determining when the progress is complete and calling {@link #reset} to clear and/or hide the control.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="value">A floating point value between 0 and 1 (e.g., .5, defaults to 0)</param>
		/// <param name="text">The string to display in the progress text element (defaults to &apos;&apos;)</param>
		/// <param name="animate">
		/// Whether to animate the transition of the progress bar. If this value is
		/// not specified, the default for the class is used (default to false)
		/// </param>
		/// <returns>this</returns>
		[ScriptName("updateProgress")]
		public ext.ProgressBar UpdateProgress(float value, string text, bool animate)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar value, and optionally its text. If the text argument is not specified,
		/// any existing text value will be unchanged. To blank out existing text, pass &apos;&apos;. Note that even
		/// if the progress bar value exceeds 1, it will never automatically reset -- you are responsible for
		/// determining when the progress is complete and calling {@link #reset} to clear and/or hide the control.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="value">A floating point value between 0 and 1 (e.g., .5, defaults to 0)</param>
		/// <param name="text">The string to display in the progress text element (defaults to &apos;&apos;)</param>
		/// <returns>this</returns>
		[ScriptName("updateProgress")]
		public ext.ProgressBar UpdateProgress(float value, string text)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar value, and optionally its text. If the text argument is not specified,
		/// any existing text value will be unchanged. To blank out existing text, pass &apos;&apos;. Note that even
		/// if the progress bar value exceeds 1, it will never automatically reset -- you are responsible for
		/// determining when the progress is complete and calling {@link #reset} to clear and/or hide the control.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="value">A floating point value between 0 and 1 (e.g., .5, defaults to 0)</param>
		/// <returns>this</returns>
		[ScriptName("updateProgress")]
		public ext.ProgressBar UpdateProgress(float value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar value, and optionally its text. If the text argument is not specified,
		/// any existing text value will be unchanged. To blank out existing text, pass &apos;&apos;. Note that even
		/// if the progress bar value exceeds 1, it will never automatically reset -- you are responsible for
		/// determining when the progress is complete and calling {@link #reset} to clear and/or hide the control.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <returns>this</returns>
		[ScriptName("updateProgress")]
		public ext.ProgressBar UpdateProgress()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Initiates an auto-updating progress bar. A duration can be specified, in which case the progress
		/// bar will automatically reset after a fixed amount of time and optionally call a callback function
		/// if specified. If no duration is passed in, then the progress bar will run indefinitely and must
		/// be manually cleared by calling {@link #reset}. The wait method accepts a config object with
		/// the following properties:
		/// 
		/// Property Type Description
		/// ---------- ------------ ----------------------------------------------------------------------
		/// duration Number The length of time in milliseconds that the progress bar should
		/// run before resetting itself (defaults to undefined, in which case it
		/// will run indefinitely until reset is called)
		/// interval Number The length of time in milliseconds between each progress update
		/// (defaults to 1000 ms)
		/// animate Boolean Whether to animate the transition of the progress bar. If this value is
		/// not specified, the default for the class is used.
		/// increment Number...
		/// </summary>
		/// <htmlSummary>
		/// Initiates an auto-updating progress bar. A duration can be specified, in which case the progress
		/// bar will automatically reset after a fixed amount of time and optionally call a callback function
		/// if specified. If no duration is passed in, then the progress bar will run indefinitely and must
		/// be manually cleared by calling {@link #reset}. The wait method accepts a config object with
		/// the following properties:
		/// &lt;pre&gt;
		/// Property Type Description
		/// ---------- ------------ ----------------------------------------------------------------------
		/// duration Number The length of time in milliseconds that the progress bar should
		/// run before resetting itself (defaults to undefined, in which case it
		/// will run indefinitely until reset is called)
		/// interval Number The length of time in milliseconds between each progress update
		/// (defaults to 1000 ms)
		/// animate Boolean Whether to animate the transition of the progress bar. If this value is
		/// not specified, the default for the class is used.
		/// increment Number The number of progress update segments to display within the progress
		/// bar (defaults to 10). If the bar reaches the end and is still
		/// updating, it will automatically wrap back to the beginning.
		/// text String Optional text to display in the progress bar element (defaults to &apos;&apos;).
		/// fn Function A callback function to execute after the progress bar finishes auto-
		/// updating. The function will be called with no arguments. This function
		/// will be ignored if duration is not specified since in that case the
		/// progress bar can only be stopped programmatically, so any required function
		/// should be called by the same code after it resets the progress bar.
		/// scope Object The scope that is passed to the callback function (only applies when
		/// duration and fn are both passed).
		/// &lt;/pre&gt;
		///
		/// Example usage:
		/// &lt;pre&gt;&lt;code&gt;
		/// var p = new Ext.ProgressBar({
		/// renderTo: &apos;my-el&apos;
		/// });
		///
		/// //Wait for 5 seconds, then update the status el (progress bar will auto-reset)
		/// p.wait({
		/// interval: 100, //bar will move fast!
		/// duration: 5000,
		/// increment: 15,
		/// text: &apos;Updating...&apos;,
		/// scope: this,
		/// fn: function(){
		/// Ext.fly(&apos;status&apos;).update(&apos;Done!&apos;);
		/// }
		/// });
		///
		/// //Or update indefinitely until some async action completes, then reset manually
		/// p.wait();
		/// myAction.on(&apos;complete&apos;, function(){
		/// p.reset();
		/// Ext.fly(&apos;status&apos;).update(&apos;Done!&apos;);
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="config">Configuration options</param>
		/// <returns>this</returns>
		[ScriptName("wait")]
		public ext.ProgressBar Wait(object config)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Initiates an auto-updating progress bar. A duration can be specified, in which case the progress
		/// bar will automatically reset after a fixed amount of time and optionally call a callback function
		/// if specified. If no duration is passed in, then the progress bar will run indefinitely and must
		/// be manually cleared by calling {@link #reset}. The wait method accepts a config object with
		/// the following properties:
		/// 
		/// Property Type Description
		/// ---------- ------------ ----------------------------------------------------------------------
		/// duration Number The length of time in milliseconds that the progress bar should
		/// run before resetting itself (defaults to undefined, in which case it
		/// will run indefinitely until reset is called)
		/// interval Number The length of time in milliseconds between each progress update
		/// (defaults to 1000 ms)
		/// animate Boolean Whether to animate the transition of the progress bar. If this value is
		/// not specified, the default for the class is used.
		/// increment Number...
		/// </summary>
		/// <htmlSummary>
		/// Initiates an auto-updating progress bar. A duration can be specified, in which case the progress
		/// bar will automatically reset after a fixed amount of time and optionally call a callback function
		/// if specified. If no duration is passed in, then the progress bar will run indefinitely and must
		/// be manually cleared by calling {@link #reset}. The wait method accepts a config object with
		/// the following properties:
		/// &lt;pre&gt;
		/// Property Type Description
		/// ---------- ------------ ----------------------------------------------------------------------
		/// duration Number The length of time in milliseconds that the progress bar should
		/// run before resetting itself (defaults to undefined, in which case it
		/// will run indefinitely until reset is called)
		/// interval Number The length of time in milliseconds between each progress update
		/// (defaults to 1000 ms)
		/// animate Boolean Whether to animate the transition of the progress bar. If this value is
		/// not specified, the default for the class is used.
		/// increment Number The number of progress update segments to display within the progress
		/// bar (defaults to 10). If the bar reaches the end and is still
		/// updating, it will automatically wrap back to the beginning.
		/// text String Optional text to display in the progress bar element (defaults to &apos;&apos;).
		/// fn Function A callback function to execute after the progress bar finishes auto-
		/// updating. The function will be called with no arguments. This function
		/// will be ignored if duration is not specified since in that case the
		/// progress bar can only be stopped programmatically, so any required function
		/// should be called by the same code after it resets the progress bar.
		/// scope Object The scope that is passed to the callback function (only applies when
		/// duration and fn are both passed).
		/// &lt;/pre&gt;
		///
		/// Example usage:
		/// &lt;pre&gt;&lt;code&gt;
		/// var p = new Ext.ProgressBar({
		/// renderTo: &apos;my-el&apos;
		/// });
		///
		/// //Wait for 5 seconds, then update the status el (progress bar will auto-reset)
		/// p.wait({
		/// interval: 100, //bar will move fast!
		/// duration: 5000,
		/// increment: 15,
		/// text: &apos;Updating...&apos;,
		/// scope: this,
		/// fn: function(){
		/// Ext.fly(&apos;status&apos;).update(&apos;Done!&apos;);
		/// }
		/// });
		///
		/// //Or update indefinitely until some async action completes, then reset manually
		/// p.wait();
		/// myAction.on(&apos;complete&apos;, function(){
		/// p.reset();
		/// Ext.fly(&apos;status&apos;).update(&apos;Done!&apos;);
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <returns>this</returns>
		[ScriptName("wait")]
		public ext.ProgressBar Wait()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar text. If specified, textEl will be updated, otherwise the progress
		/// bar itself will display the updated text.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="text">The string to display in the progress text element (defaults to &apos;&apos;)</param>
		/// <returns>this</returns>
		[ScriptName("updateText")]
		public ext.ProgressBar UpdateText(string text)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Updates the progress bar text. If specified, textEl will be updated, otherwise the progress
		/// bar itself will display the updated text.
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <returns>this</returns>
		[ScriptName("updateText")]
		public ext.ProgressBar UpdateText()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Resets the progress bar value to 0 and text to empty string. If hide = true, the progress
		/// bar will also be hidden (using the {@link #hideMode} property internally).
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <param name="hide">True to hide the progress bar (defaults to false)</param>
		/// <returns>this</returns>
		[ScriptName("reset")]
		public ext.ProgressBar Reset(bool hide)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Resets the progress bar value to 0 and text to empty string. If hide = true, the progress
		/// bar will also be hidden (using the {@link #hideMode} property internally).
		/// </summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		/// <returns>this</returns>
		[ScriptName("reset")]
		public ext.ProgressBar Reset()
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires after each update interval</summary>
		/// <definedin>src\widgets\ProgressBar.js</definedin>
		[ScriptName("update")]
		public event ext.auto.Delegate_ext_ProgressBar_And_System_Number_And_System_String Update;
		#endregion
	}
}
